package es.usj.redes.dto;

import java.io.Serializable;
import java.util.Date;

import es.usj.redes.dao.DAOException;
import es.usj.redes.dao.DAOFactory;


public class Mail implements Serializable {

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int idMail;
    /**
     * Es el from.
     */
    private int idUsuario=0;
    private String from="";
    private String to="";
    private String subject="";
    private String texto="";
    private java.util.Date fechaEnviado;

    public Mail() {
    }

    public Mail(String from, String to, String subject, String texto) {
		super();
		this.from = from;
		this.to = to;
		this.subject = subject;
		this.texto = texto;
	}

	public Mail(int idMail, int idUsuario, String from, String to,
			String subject, String texto, Date fechaEnviado) {
		super();
		this.idMail = idMail;
		this.idUsuario = idUsuario;
		this.from = from;
		this.to = to;
		this.subject = subject;
		this.texto = texto;
		this.fechaEnviado = fechaEnviado;
	}

	public int getIdMail() {
        return idMail;
    }

    public void setIdMail(int idMail) {
        this.idMail = idMail;
    }

    public int getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(int idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }

    public java.util.Date getFechaEnviado() {
        return fechaEnviado;
    }

    public void setFechaEnviado(java.util.Date fechaEnviado) {
        this.fechaEnviado = fechaEnviado;
    }

    public boolean equals(Object inObject) {
        if(inObject == null) return false;

        if(!(inObject instanceof Mail)) return false;

        Mail obj = (Mail) inObject;
        if(idMail != obj.idMail)
            return false;
        if(idUsuario != obj.idUsuario)
            return false;
        if(!subject.equals(obj.subject))
            return false;
        if(!texto.equals(obj.texto))
            return false;
        if(!fechaEnviado.equals(obj.fechaEnviado))
            return false;
        return true;
    }

    public String toString() {
        StringBuffer sb = new StringBuffer("Mail::");
        sb.append("idMail=");
        sb.append(idMail);
        sb.append(";idUsuario=");
        sb.append(idUsuario);
        sb.append(";subject=");
        sb.append(subject);
        sb.append(";texto=");
        sb.append(texto);
        sb.append(";fechaEnviado=");
        sb.append(fechaEnviado);
        return sb.toString();
    }

	public String getFrom() {
		return from;
	}

	public void setFrom(String from) {
		this.from = from;
		if(this.idUsuario==0){
			int id=0;
			try {
				Users user = DAOFactory.getInstance().getUsersDAO().read(from);
				if(user!=null)
					id = user.getIdUsuario();
			} catch (DAOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			this.idUsuario = id;
		}
	}

	public String getTo() {
		return to;
	}

	public void setTo(String to) {
		this.to = to;
	}
}
